package com.ruoyi.common.utils;

import com.ruoyi.common.config.DeepSeekConfig;
import com.ruoyi.common.core.domain.model.DeepSeekMessage;
import com.ruoyi.common.core.domain.model.DeepSeekRequest;
import com.ruoyi.common.core.domain.model.DeepSeekResponse;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.HttpEntity;
import org.springframework.http.HttpHeaders;
import org.springframework.http.MediaType;
import org.springframework.http.ResponseEntity;
import org.springframework.stereotype.Component;
import org.springframework.web.client.RestTemplate;

import java.util.Arrays;

@Component
public class DeepSeekUtil {

    @Autowired
    private DeepSeekConfig deepSeekConfig;


    public String generateLoveMessage() {
        try {
            RestTemplate restTemplate = new RestTemplate();

            HttpHeaders headers = new HttpHeaders();
            headers.setContentType(MediaType.APPLICATION_JSON);
            headers.setBearerAuth(deepSeekConfig.getApiKey());

            DeepSeekRequest request = new DeepSeekRequest();
            request.setModel(deepSeekConfig.getModel());
            request.setMessages(Arrays.asList(
                    new DeepSeekMessage("system", "You are a helpful assistant."),
                    new DeepSeekMessage("user", "【终极版提示词】\n" +
                            "你的角色： 你是一位充满创造力和浪漫细胞的“每日情话大师”。\n" +
                            "\n" +
                            "你的核心任务： 根据我的请求，生成一条当天独一无二的情话。\n" +
                            "\n" +
                            "创作规则与流程：\n" +
                            "\n" +
                            "启动“创造力引擎”：\n" +
                            "\n" +
                            "日期关联： 将今天的日期（年、月、日）转换为一个种子数字。例如，2023年10月27日 -> 2+0+2+3+1+0+2+7 = 17 -> 1+7 = 8。\n" +
                            "\n" +
                            "主题轮换： 根据这个种子数字，从以下主题库中自动选择一个今日主题：\n" +
                            "\n" +
                            "1-2：宇宙与自然 (星辰、大海、风、光)\n" +
                            "\n" +
                            "3-4：科技与抽象 (代码、算法、引力、维度)\n" +
                            "\n" +
                            "5-6：生活与感官 (咖啡、书籍、味道、声音)\n" +
                            "\n" +
                            "7-8：诗意与古典 (诗歌、神话、历史、宝藏)\n" +
                            "\n" +
                            "9-0：未来与冒险 (时间旅行、地图、未知、探索)\n" +
                            "\n" +
                            "灵感融合： 将选定的“今日主题”与以下“情感核心”之一随机结合，生成独特灵感：\n" +
                            "\n" +
                            "情感核心示例：陪伴、唯一、改变、细节、渴望、习惯、崇拜、治愈。\n" +
                            "\n" +
                            "创作要求：\n" +
                            "\n" +
                            "绝对新颖： 严禁使用“月亮代表我的心”、“你是我的阳光”等陈词滥调。必须是一次性的、原创的表达。\n" +
                            "\n" +
                            "长度适中： 1-2句话，精炼而有力。\n" +
                            "\n" +
                            "意境优美： 要有画面感、想象力或巧妙的比喻。\n" +
                            "\n" +
                            "情感真挚： 避免轻浮，要能触动人心。\n" +
                            "\n" +
                            "最终输出格式：\n" +
                            "只返回给我情话内容\n" +
//                            "然后，空一行，输出生成的情话。\n" +
//                            "\n" +
                            "现在，请开始为今天生成一条情话。")
            ));

            HttpEntity<DeepSeekRequest> entity = new HttpEntity<>(request, headers);

            ResponseEntity<DeepSeekResponse> response = restTemplate.postForEntity(
                    deepSeekConfig.getBaseUrl() + "/chat/completions",
                    entity,
                    DeepSeekResponse.class
            );

            if (response.getBody() != null && response.getBody().getChoices() != null 
                    && response.getBody().getChoices().length > 0) {
                return response.getBody().getChoices()[0].getMessage().getContent();
            }
        } catch (Exception e) {
            e.printStackTrace();
        }

        return "我爱你，如山间清爽的风，如古城温暖的光。";
    }
}